public class 逆波兰表达式求值 {
    public int evalRPN(String[] tokens) {
        // 手写栈
        int[] arr = new int[tokens.length];
        int index = 0;
        // 遍历所有的字符串
        for (String str : tokens) {
            // 如果是符号字符, 需要出栈两个元素进行计算, 再重新压入栈
            if (str.equals("+") || str.equals("-") || str.equals("*") || str.equals("/")) {
                int b = arr[--index]; // 右操作数
                int a = arr[--index]; // 左操作数
                if (str.equals("+")) {
                    arr[index++] = a + b;
                } else if (str.equals("-")) {
                    arr[index++] = a - b;
                } else if (str.equals("*")) {
                    arr[index++] = a * b;
                } else if (str.equals("/")) {
                    arr[index++] = a / b;
                }
            } else {
                // 如果是数就压栈
                arr[index++] = Integer.parseInt(str);
            }
        }
        // 返回最后一个元素, 就是我们计算后的结果
        return arr[0];
    }
}
